from PyQt5.QtWidgets import (QApplication, QWidget,
QDateTimeEdit, QVBoxLayout)
from PyQt5.QtCore import QDate, QDateTime
import sys

class date_application(QWidget):
    def __init__(self):
        super(date_application, self).__init__()
        self.gui_setup()

    def gui_setup(self):
        self.setWindowTitle("日期选择板")
        self.resize(300, 90)
        # 获得一个时间选择面板
        date_time_1 = QDateTimeEdit()
        # 下面是获得时间的最大最小值
        date_time_1.setMinimumDate(QDate.currentDate().addDays(-365))
        date_time_1.setMaximumDate(QDate.currentDate().addDays(365))
        # 日期变化
        date_time_1.dateChanged.connect(self.date_time_1_date_cb)
        # 时间变化
        date_time_1.timeChanged.connect(self.date_time_1_date_cb)
        # 日期和时间变化
        date_time_1.dateTimeChanged.connect(self.date_time_1_date_cb)
        self.date_time = date_time_1

        # 获得第二个时间选择面板
        date_time_2 = QDateTimeEdit(QDateTime.currentDateTime())
        # 以日历形式选择时间
        date_time_2.setCalendarPopup(True)

        # 获得第三个时间选择面板
        date_time_3 = QDateTimeEdit(QDate.currentDate())
        # 日期格式
        date_time_3.setDisplayFormat("yyyy<><>MM<><>dd")

        # 获得第四个时间选择面板
        date_time_4 = QDateTimeEdit(QDateTime.currentDateTime())
        # 时间格式
        date_time_4.setDisplayFormat("HH???mm???ss")

        # 添加到布局里
        layout = QVBoxLayout()
        layout.addWidget(date_time_1)
        layout.addWidget(date_time_2)
        layout.addWidget(date_time_3)
        layout.addWidget(date_time_4)

        self.setLayout(layout)

    def date_time_1_date_cb(self, date):
        print(date)
        print(self.date_time.maximumDate())
        print(self.date_time.minimumDate())


if __name__ == "__main__":
    app = QApplication(sys.argv)
    instance = date_application()
    instance.show()
    sys.exit(app.exec_())